#pragma once
#include "FoodEnterpriseBuilding.h"

enum class kind_of_restaurant { FineDining, FastFood, Etc };

std::istream& operator>>(istream& in, kind_of_restaurant &k)
{
	string str;
	getline(in, str);
	if (str.compare("FineDining") == 0)
		k = kind_of_restaurant::FineDining;
	else if (str.compare("FastFood") == 0)
		k = kind_of_restaurant::FastFood;
	else
		k = kind_of_restaurant::Etc;
	return in;
}

std::ostream& operator<<(ostream& out, const kind_of_restaurant &k)
{
	switch (k)
	{
	case kind_of_restaurant::FineDining: out << "FineDining"; break;
	case kind_of_restaurant::FastFood: out << "FastFood";  break;
	default: out << "Etc"; break;
	}
	return out;
}


class Restaurant :
	public FoodEnterpriseBuilding
{
private:
	kind_of_restaurant kind;
public:

	Restaurant() : kind(kind_of_restaurant::Etc){ }

	Restaurant(string info, int maxNumberOfGuests, kind_of_restaurant kind)
		: FoodEnterpriseBuilding(info, maxNumberOfGuests)
	{
		this->kind = kind;
	}
	
	~Restaurant(){ }

	void setKind(kind_of_restaurant kind){ this->kind = kind; }
	kind_of_restaurant getKind(){ return kind; }

	void Print()
	{
		FoodEnterpriseBuilding::Print();
		cout << ", Kind: " << kind;
	}
};

